package com.qys.livesMall.app.user.service;

import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qys.livesMall.app.user.model.dto.AppBaseDTO;
import com.qys.livesMall.app.user.model.entity.AppUserConcern;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qys.livesMall.app.user.model.vo.app.AppUserConcernVO;
import com.qys.livesMall.framework.view.BaseQuery;

import java.util.List;

/**
 * <p>
 * 用户关注列表 服务类
 * </p>
 *
 * @author
 * @since 2023-06-02
 */
public interface AppUserConcernService extends IService<AppUserConcern> {

    /**
     * 用户关注/取消关注
     *
     * @param concernId 被关注人Id
     * @param userId    关注人id
     */
    void concernByUserId(Long concernId, Long userId);

    /**
     * 校验用户是否关注该用户
     *
     * @param userId    用户id
     * @param concernId 被关注人Id
     */
    Integer checkUserConcern(Long userId, Long concernId);

    /**
     * 查询用户关注列表
     *
     * @param baseQuery
     */
    Page<AppUserConcernVO> pageUserConcern(BaseQuery baseQuery);

    /**
     * 查询用户粉丝列表
     *
     * @param baseQuery
     */
    Page<AppUserConcernVO> pageUserFans(BaseQuery baseQuery);

    /**
     * 查询用户好友列表
     *
     * @param baseQuery
     */
    Page<AppUserConcernVO> pageUserFriend(BaseQuery baseQuery);

    /**
     * 昨天新增粉丝数据
     * @param dateTime
     * @return
     */
    List<AppUserConcern> getUserConcernList(DateTime dateTime);

    List<AppUserConcern> getUserConcerns(Long userId);

    Page<AppUserConcernVO> getFansPage(BaseQuery dto);

    Page<AppUserConcernVO> getInteractionUser(BaseQuery dto, String type);

    /**
     * 查询当前用户关注的用户列表
     * @param baseQuery
     * @return
     */
    Page<AppUserConcernVO> followUser(BaseQuery baseQuery);
}
